﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace MayfairFramework
{
    /// <summary>
    /// Enum の拡張クラスです。
    /// </summary>
    public static class EnumExtensions
    {
        /// <summary>
        /// 属性で指定された名前を取得します。
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public static string Name(this Enum e)
        {
            Type type = e.GetType();
            string name = Enum.GetName(type, e);
            FieldInfo info = type.GetField(name);
            EnumStringAttribute[] attributes = (EnumStringAttribute[])info.GetCustomAttributes(typeof(EnumStringAttribute), false);
            return (attributes.Length == 0) ? string.Empty : attributes[0].Name;
        }

        /// <summary>
        /// 属性で指定されたメッセージを取得します。
        /// </summary>
        /// <param name="e"></param>
        /// <returns></returns>
        public static string Message(this Enum e)
        {
            Type type = e.GetType();
            string name = Enum.GetName(type, e);
            FieldInfo info = type.GetField(name);
            EnumStringAttribute[] attributes = (EnumStringAttribute[])info.GetCustomAttributes(typeof(EnumStringAttribute), false);
            return (attributes.Length == 0) ? string.Empty : attributes[0].Message;
        }
    }
}
